#region License
/* 
 * Copyright (C) 1999-2021 John Källén.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file COPYING.  If not, write to
 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Reko.Arch.Arm.AArch64
{
    public enum Mnemonic
    {
        Invalid,
        Nyi,

        adc,
        adcs,
        add,
        addhn,
        addhn2,
        adds,
        addv,
        adr,
        adrp,
        aesd,
        aese,
        aesimc,
        aesmc,
        and,
        ands,
        asr,
        asrv,
        b,
        bfm,
        bic,
        bics,
        bif,
        bit,
        bl,
        blr,
        br,
        brk,
        bsl,
        casab,
        casalb,
        casp,
        caspa,
        caspal,
        caspb,
        caspbl,
        caspl,
        cbnz,
        cbz,
        ccmn,
        ccmp,
        cls,
        clz,
        cmeq,
        cmhi,
        cmhs,
        cmp,
        crc32b,
        crc32cb,
        crc32ch,
        crc32cw,
        crc32h,
        crc32w,
        crc32x,
        csel,
        csinc,
        csinv,
        csneg,
        dcps1,
        dcps2,
        dcps3,
        dmb,
        drps,
        dsb,
        dup,
        eon,
        eor,
        eret,
        ext,
        extr,
        fabs,
        fadd,
        fcmla,
        fcmp,
        fcmpe,
        fcsel,
        fcvt,
        fcvtms,
        fcvtps,
        fcvtzs,
        fcvtzu,
        fdiv,
        fmadd,
        fmax,
        fmaxnm,
        fmin,
        fmov,
        fmsub,
        fmul,
        fneg,
        fnmadd,
        fnmsub,
        fnmul,
        fsqrt,
        fsub,
        hint,
        hlt,
        hvc,
        ins,
        isb,
        ld1,
        ld1r,
        ld2,
        ld3,
        ld4,
        ldaddh,
        ldaddlh,
        ldarb,
        ldarh,
        ldaxp,
        ldaxr,
        ldaxrb,
        ldaxrh,
        ldclrh,
        ldeorh,
        ldlarb,
        ldnp,
        ldp,
        ldpsw,
        ldr,
        ldrb,
        ldrh,
        ldrsb,
        ldrsh,
        ldrsw,
        ldseth,
        ldsmaxh,
        ldsminh,
        ldtr,
        ldtrb,
        ldtrh,
        ldtsrb,
        ldtsrh,
        ldtsrw,
        ldumaxh,
        lduminh,
        ldur,
        ldurb,
        ldurh,
        ldursb,
        ldursh,
        ldursw,
        ldxp,
        ldxr,
        ldxrb,
        lsl,
        lslv,
        lsr,
        lsrv,
        madd,
        mls,
        mneg,
        mov,
        movi,
        movk,
        movn,
        movz,
        mrs,
        msr,
        msub,
        mul,
        mvn,
        nop,
        not,
        orn,
        orr,
        prfm,
        rbit,
        ret,
        rev,
        rev16,
        rev32,
        ror,
        rorv,
        sbc,
        sbcs,
        sbfiz,
        sbfm,
        scvtf,
        sdiv,
        sev,
        sevl,
        sha1c,
        sha1h,
        sha1m,
        sha1p,
        sha1su0,
        sha1su1,
        sha256h,
        sha256h2,
        sha256su0,
        sha256su1,
        shrn,
        smaddl,
        smax,
        smaxv,
        smc,
        smnegll,
        smsubl,
        smulh,
        smull,
        sqdmulh,
        sshll,
        sshr,
        ssubl,
        ssubl2,
        st1,
        st2,
        st3,
        st4,
        stllr,
        stllrb,
        stllrh,
        stlr,
        stlrb,
        stlrh,
        stlxp,
        stlxr,
        stlxrb,
        stnp,
        stp,
        str,
        strb,
        strh,
        sttr,
        sttrb,
        sttrh,
        stur,
        sturb,
        sturh,
        stxp,
        stxr,
        stxrb,
        stxrh,
        sub,
        subs,
        svc,
        sxtb,
        sxth,
        sxtl,
        sxtw,
        sxtx,
        tbl,
        tbnz,
        tbx,
        tbz,
        test,
        uabd,
        uaddw,
        ubfm,
        ucvtf,
        udiv,
        umaddl,
        umlal,
        umnegl,
        umov,
        umsubl,
        umulh,
        umull,
        ushll,
        ushll2,
        ushr,
        uxtb,
        uxth,
        uxtl,
        uxtl2,
        uxtw,
        uxtx,
        wfe,
        wfi,
        xtn,
        xtn2,
        yield,
        usubl,
        usubl2,
    }
}
